perm filename OP1.MAC[SYS,HE] blob
sn#004241 filedate 1972-06-08 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 TITLE OP1 - OPERATOR 1
00004 00003 MOVEM 7,TEMP#
00006 00004 RADIX 10
00016 ENDMK
⊗;
TITLE OP1 - OPERATOR 1
ENTRY OP1
INTERNAL MAGSUM,CUT
EXTERNAL ADJUST, LLINE, FLINE, TVWORD, LINLEN, BITS, IWID
EXTERNAL TVOUT, LSIDE, RSIDE
ARGAC=16
OPDEF SUBR [PUSHJ 17,0]
OPDEF RETURN [POPJ 17,0]
OP1: MOVEM 16,TEMPY#
HRRZI 16,ACS
BLT 16,ACS+15
MOVE LLINE
SUB FLINE
SOS
MOVEM YCNT#
MOVE TVOUT; SET UP POINTERS IN 0-3
HRR TVWORD
AOS
MOVE 1,
MOVE 2,LINLEN
MOVE 3,2
ASH 3,1
ADD 2,1
ADD 3,1
MOVN 16,BITS; 16 IS -BITS
LOOPY: MOVE 5,IWID
SUBI 5,2
MOVEM 5,XTMP#
ILDB 4,3; DENSITIES IN 4-14
ILDB 5,2
ILDB 6,1
ILDB 7,3
ILDB 10,2
ILDB 11,1
LOOP: ILDB 12,3
ILDB 13,2
ILDB 14,1
SUBM 12,6; 6←12-6 SOBEL OPERATOR
SUBM 14,4; 4←14-4
SUBM 13,5; 5←13-5
MOVE 15,11
SUB 15,7; 15←11-7
ASH 5,1; 5←2(13-5)
ASH 15,1; 15←2(11-7)
SUB 15,6
ADD 15,4; 15←2(11-7)-(12-6)+(14-4)
ADD 6,5
ADD 6,4; 6←(12-6)+2(13-5)+(14-4)
MOVM 4,6
MOVEM 7,TEMP#
MOVM 6,15
ADD 4,SV+6(16)
ADD 6,SV+6(16)
XCT SVA+6(16)
XCT SVB+6(16)
ASH 6,1
MOVE 5,6
LDB 4,PPP(4)
CAMG 4,CUT#
MOVEI 4,0
CAML 16,[-3]
ASH 4,-1
ADDM 4,MAGSUM#
IDPB 4,0
MOVE 7,TEMP
MOVE 15,[XWD 7,4]
BLT 15,11
SOSLE XTMP
JRST LOOP
SETZM 15
MOVEI 14,3
DPB 15,[POINT 6,(14),5]
SOJGE 14,.-1
SOSLE YCNT
JRST LOOPY
AOS LSIDE
AOS FLINE
SOS LLINE
SOS 1,RSIDE
SUB 1,LSIDE
AOS 1
MOVEM 1,IWID
SUBR ADJUST
HRLZI 16,ACS
BLT 16,16
MOVE 16,TEMPY
POPJ 17,
SV: OCT 14,7,2,1
SVA: IDIVI 4,24
IDIVI 4,11
ASH 4,-2
ASH 4,-1
SVB: IDIVI 6,24
IDIVI 6,11
ASH 6,-2
ASH 6,-1
RADIX 10
MAGT: BYTE (4) 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
BYTE (4) 1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
BYTE (4) 2,2,3,4,4,5,6,7,8,9,10,11,12,13,14,15
BYTE (4) 3,3,4,4,5,6,7,8,9,9,10,11,12,13,14,15
BYTE (4) 4,4,4,5,6,6,7,8,9,10,11,12,13,14,15,15
BYTE (4) 5,5,5,6,6,7,8,9,9,10,11,12,13,14,15,15
BYTE (4) 6,6,6,7,7,8,8,9,10,11,12,12,13,14,15,15
BYTE (4) 7,7,7,8,8,9,9,10,10,11,12,13,14,15,15,15
BYTE (4) 8,8,8,9,9,9,10,10,11,12,13,14,14,15,15,15
BYTE (4) 9,9,9,9,10,10,11,11,12,13,13,14,15,15,15,15
BYTE (4) 10,10,10,10,11,11,12,12,13,13,14,15,15,15,15,15
BYTE (4) 11,11,11,11,12,12,12,13,14,14,15,15,15,15,15,15
BYTE (4) 12,12,12,12,13,13,13,14,14,15,15,15,15,15,15,15
BYTE (4) 13,13,13,13,14,14,14,15,15,15,15,15,15,15,15,15
BYTE (4) 14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15
BYTE (4) 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
RADIX 8
DEFINE PP(N) <XWD N'0405,MAGT>
DEFINE PP1(N) <XWD N'0405,MAGT+1>
KK==40
PPP: REPEAT 11,<PP \KK
KK==KK-4>
KK==40
REPEAT 7,<PP1 \KK
KK==KK-4>
ACS: BLOCK 17
END